home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / mus / play / oplay1231.lha / src / forms.h < prev    next >
C/C++ Source or Header  |  1992-09-26  |  4KB  |  143 lines

  1. /*
  2.  * OmniPlay, v0.98
  3.  * by David Champion
  4.  *
  5.  * format identifiers and data structures
  6.  * 29 Aug 92
  7.  */
  8.  
  9.  
  10. #include <exec/types.h>
  11.  
  12. /***********
  13. * IFF-8SVX *
  14. ***********/
  15. /*typedef LONG    ID;*/
  16.  
  17. #define WordAlign(size)    ((size+1)&~1)
  18.  
  19. #define MakeID(a,b,c,d)    ( (LONG)(a)<<24L | (LONG)(b)<<16L | (c)<<8 | (d) )
  20.  
  21. struct ChunkHeader {
  22.     LONG    ckID;
  23.     LONG    ckSize;
  24. };
  25.  
  26. #define ID_FORM        MakeID('F','O','R','M')    /* iff req'd */
  27. #define ID_8SVX        MakeID('8','S','V','X') /* iff req'd */
  28. #define ID_VHDR        MakeID('V','H','D','R') /* iff req'd */
  29. #define ID_NAME        MakeID('N','A','M','E') /* iff opt'l */
  30. #define ID_COPY        MakeID('(','c',')',' ') /* iff opt'l */
  31. #define ID_AUTH        MakeID('A','U','T','H') /* iff opt'l */
  32. #define ID_ANNO        MakeID('A','N','N','O') /* iff opt'l */
  33. #define ID_BODY        MakeID('B','O','D','Y') /* iff req'd */
  34. #define ID_NULL        0L            /* No ID */
  35.  
  36. #define sCmpNone    0    /* not compressed */
  37. #define sCmpFibDelta    1    /* Fibonacci-delta encoding (Appendix C) */
  38. #define sCmpPPacked    1<<7    /* nonstandard: PowerPacked BODY */
  39.                 /* Could be more kinds in the future. */
  40. struct Voice8Header {
  41.     ULONG    oneShotHiSamples;    /* # samples in the high octave 1-shot part */
  42.     ULONG    repeatHiSamples;    /* # samples in the high octave repeat part */
  43.     ULONG    samplesPerHiCycle;    /* # samples/cycle in high octave, else 0 */
  44.     UWORD    samplesPerSec;        /* data sampling rate */
  45.     UBYTE    ctOctave;        /* # of octaves of waveforms */
  46.     UBYTE    sCompression;        /* data compression technique used */
  47.     LONG    volume;            /* playback nominal volume from 0 to Unity */
  48. };
  49.  
  50.  
  51. /*******
  52. * AIFF *
  53. *******/
  54. #define ID_AIFF        MakeID('A','I','F','F')
  55. #define ID_COMM        MakeID('C','O','M','M')
  56. #define ID_SSND        MakeID('S','S','N','D')
  57. #define ID_COMT        MakeID('C','O','M','T')
  58.  
  59. struct CommonChunk {
  60.     UWORD    numChannels;
  61.     ULONG    numSampleFrames;
  62.     UWORD    sampleSize;
  63.     UBYTE    sampleRate[10];        /* typed as Extended in official documentation */
  64. };
  65.  
  66.  
  67. /*****************
  68. * Creative Voice *
  69. *****************/
  70. #define ID_VOCH        MakeID('C','r','e','a')
  71.  
  72. /* This is very bad.  Wish I had a decent spec. */
  73. /* Wish VOC were never spawned.  I hate this.   */
  74. /* Never mind, we'll do it Mike's way.          */
  75. //struct VocHdr {
  76. //    char    ID[18];
  77. //    char    EOFTag;
  78. //    UWORD    Block1Offset;
  79. //    UBYTE    MinVersion;
  80. //    UBYTE    MajVersion;
  81. //    UBYTE    MinVersionInv;
  82. //    UBYTE    MajVersionInv;
  83. //};
  84. //struct VocBlockHdr {
  85. //    UBYTE    Type;
  86. //    UBYTE    Size3[3];
  87. //    UBYTE    Info;
  88. //}
  89.  
  90.  
  91. /***********
  92. * RIFF-WAV *
  93. ***********/
  94. #define ID_RIFF        MakeID('R','I','F','F')
  95. #define ID_WAVE        MakeID('W','A','V','E')
  96. #define ID_fmt_        MakeID('f','m','t',' ')
  97. #define ID_data        MakeID('d','a','t','a')
  98. #define ID_INFO        MakeID('I','N','F','O')
  99. #define ID_IARL        MakeID('I','A','R','L')
  100. #define ID_IART        MakeID('I','A','R','T')
  101. #define ID_ICMT        MakeID('I','C','M','T')
  102. #define ID_ICOP        MakeID('I','C','O','P')
  103. #define ID_IENG        MakeID('I','E','N','G')
  104. #define ID_IGNR        MakeID('I','G','N','R')
  105. #define ID_INAM        MakeID('I','N','A','M')
  106. #define ID_IPRD        MakeID('I','P','R','D')
  107. #define ID_ISBJ        MakeID('I','S','B','J')
  108. #define ID_ISFT        MakeID('I','S','F','T')
  109. #define ID_ITCH        MakeID('I','T','C','H')
  110.  
  111. struct WaveCommon {
  112.     UWORD    wFormatTag;
  113.     UWORD    wChannels;
  114.     ULONG    dwSamplesPerSec;
  115.     ULONG    dwAvgBytesPerSec;
  116.     UWORD    wBlockAlign;
  117. };
  118.  
  119.  
  120. /******************
  121. * Sun/NeXT  (.au) *
  122. ******************/
  123. #define ID__SND        MakeID('.','s','n','d')
  124. #define SND_FORMAT_MULAW_8    1L
  125. #define SND_FORMAT_LINEAR_8    2L
  126. #define SND_FORMAT_LINEAR_16    3L
  127.  
  128. struct SNDSoundStruct {
  129.     ULONG    magic;
  130.     ULONG    dataLocation;
  131.     ULONG    dataSize;
  132.     ULONG    dataFormat;
  133.     ULONG    samplingRate;
  134.     ULONG    channelCount;
  135.     char    info[4];
  136. };
  137.  
  138.  
  139. /*******************
  140. * PowerPacked file *
  141. *******************/
  142. #define ID_PP20        MakeID('P','P','2','0')
  143.